package video;

import util.PythonUtil;

import java.io.File;

/**
 * java ffmpeg把视频旋转180度
 * ffmpeg实现视频的翻转与旋转(ffmpeg4.2.2) https://www.cnblogs.com/architectforest/p/12818543.html
 *
 * 有个用户录给我的问题描述视频是倒的，所以要旋转一下
 */
public class VideoRotate {

    // 原视频文件路径
    private static final String inputVideoPath = "C:\\Users\\74102\\Desktop\\video(2).mp4";
    // 输出视频文件路径
    private static final String outputVideoPath = "C:\\Users\\74102\\Desktop\\video(33).mp4";
    // ffmpeg exe路径，如果配置了环境变量，只写名称即可，如果没有配置，就写全路径
    private static final String ffmpegExePath = "D:\\soft\\ffmpeg-full\\bin\\ffmpeg";
    // private static final String ffmpegExePath = "ffmpeg";

    public static void main(String[] args) throws Exception {

        // 检查输出文件是否存在
        if (inputVideoPath.equals(outputVideoPath)) {
            System.out.println("不准覆盖原视频");
            return;
        }

        // java代码 删除已存在的输出文件 也可以让ffmpeg直接覆盖
        File outputFile = new File(outputVideoPath);
        if (outputFile.exists() && outputFile.isFile()) {
            // 文件存在，删除它
            System.out.println("输出文件已存在");
            /*boolean deleted = outputFile.delete();
            if (!deleted) {
                System.out.println("无法删除已存在的输出文件");
                return;
            }*/
        }

        // FFmpeg 旋转90度的命令
        /**
         * transpose为不同值时所代表的不同意义:
         * 0: 逆时针和垂直翻转90度(默认)
         * 1: 顺时针旋转90度
         * 2: 逆时针方向90度
         * 3: 顺时针和垂直翻转90度
         */
        // ffmpeg -i in.mov -vf "transpose=2,transpose=2" out.mov
        // -y 输出文件存在则覆盖，不然会进入交互停顿
        // String[] commands = new String[]{ffmpegExePath, "-i", inputVideoPath, "-vf", "transpose=2", outputVideoPath};
        // String[] commands = new String[]{ffmpegExePath, "-y", "-i", inputVideoPath, "-vf", "transpose=2", outputVideoPath};

        // FFmpeg 旋转180度的命令 https://www.cnblogs.com/freedom-try/p/15121884.html
        // ffmpeg -i in.mov -vf "transpose=1" out.mov
        // String[] commands = new String[]{ffmpegExePath, "-i", inputVideoPath, "-vf", "transpose=2,transpose=2", outputVideoPath};
        String[] commands = new String[]{ffmpegExePath, "-y", "-i", inputVideoPath, "-vf", "transpose=2,transpose=2", outputVideoPath};

        PythonUtil.executePythonScript(commands);

        System.out.println("视频旋转角度完成");

    }

}
